// Cette fonction personnalisée calcule l'écrêtement de la CSG-CRDS sur les indemnités d'activité partielle IAP, SMIC, NetAvecIAP, Ecrêtement, BaseEcrêtement, TotalEcrêté sont des réels tMontantCSG est un tableau de 3 réels tTauxCSG est un tableau de 3 réels NOCO est une chaine CotisationsEcretementAbsentes est un booléen // Si pas d'activité partielle, pas d'écrêtement IAP=CU.MTACPA SI ToucheEnfoncée(teShift) ALORS Trace("Ecrêtement CSG : IAP = "+IAP) SI IAP=0 ALORS RENVOYER 0 // On retire les IAP du mois (venant des reports classiques Rubrique sur Cotisations) // des assiettes des 3 cotisations d'écrêtement, assiettes qu'on va recalculer ci-après POUR i=1 à 3 NOCO = CAELVA.NORU[[1 à 4]]+"E"+i SI tCumulsCotis[NOCO]..vide ALORS CotisationsEcretementAbsentes=Vrai SINON tCumulsCotis[NOCO].BRUT-=IAP FIN FIN SI CotisationsEcretementAbsentes ALORS RENVOYER 0 // On calcule le SMIC pour la durée légale // Questions en suspend : // - le SMIC doit-il être dimininué en cas de temps partiel ? Pas fait ici (ligen en commentaire) // - le SMIC doit-il être dimininué en cas d'E/S dans le mois ? Pas fait ici SMIC = Arrondi(CG.THSMIC * 35 * 52 / 12, 2) //SI 0 < PEPACT.TTTP < 100 ALORS SMIC = Arrondi(SMIC * TTTP / 100, 2) SI ToucheEnfoncée(teShift) ALORS Trace("Ecrêtement CSG : SMIC = "+SMIC) // Calcul des taux et montants des 3 parts de CRDS non déductible, CSG non déductible, CSG déductible tTauxCSG[1]=0.50 ; tTauxCSG[2]=2.40 ; tTauxCSG[3]=3.80 POUR i=1 à 3 tMontantCSG[i]=Arrondi(Arrondi(IAP*0.9825 , 2) * tTauxCSG[i] / 100 , 2) FIN // Pour les tests, on peut décommenter la ligne ci-dessous. L'écrêtement est alors neutralisé en tenant la touche Alt enfoncée //SI ToucheEnfoncée(teAlt) ALORS Trace("Ecrêtement CSG abandonné (Alt enfoncé)") ; RENVOYER 0 // On écrête successivement la CRDS non déductible, la CSG non déductible à 2,40% puis la CSG déductible à 3,80% // A chacun des 3 passages successifs dans cette boucle, on calcule le total (Brut + IAP - Total cotisations salariales) // Si ce total est inférieur au SMIC, alors on écrête la part de CRDS ou CSG sur laquelle on travaille, // mais sans aller au-delà du montant de cette part de CSG NetAvecIAP = CU.BRUFIM + CU.COTSAL + IAP POUR i=1 à 3 SI ToucheEnfoncée(teShift) ALORS Trace("Ecrêtement CSG Passe "+i+" : Total net (Revenu d'activité + IAP) = "+NetAvecIAP) // Si ce brut est supérieur au SMIC, on arrête l'écrêtement SI NetAvecIAP >= SMIC ALORS SORTIR Ecretement = Min(SMIC-NetAvecIAP, tMontantCSG[i]) SI ToucheEnfoncée(teShift) ALORS Trace("Ecrêtement CSG Passe "+i+" : Montant écrêté = "+Ecretement) NetAvecIAP+=Ecrêtement TotalEcrêté+=Ecrêtement // On reconstitue l'assiette du montant que l'on veut écrêter SI Ecrêtement=tMontantCSG[i] ALORS BaseEcrêtement=Arrondi(IAP*0.9825 , 2) SINON BaseEcrêtement=Arrondi(Ecrêtement / tTauxCSG[i] * 100, 2) FIN // Assiette que l'on envoie en négatif sur la cotisation d'écrêtement ad'hoc, NOCO = CAELVA.NORU[[1 à 4]]+"E"+i tCumulsCotis[NOCO].BRAB-=BaseEcrêtement // Si l'écrêtement de la part courante n'a été que partiel, ce n'est pas la peine d'aller au-delà. SI Ecrêtement